package strings;

/** Reverse String using different version */
public class ReverseString {

  public static void main(String[] args) {
    assert reverse("abc123").equals("321cba");
    assert reverse2("abc123").equals("321cba");
  }

  /**
   * easiest way to reverses the string str and returns it
   *
   * @param str string to be reversed
   * @return reversed string
   */
  public static String reverse(String str) {
    return new StringBuilder(str).reverse().toString();
  }

  /**
   * second way to reverses the string str and returns it
   *
   * @param str string to be reversed
   * @return reversed string
   */
  public static String reverse2(String str) {

    if (str == null || str.isEmpty()) {
      return str;
    }

    char[] value = str.toCharArray();
    for (int i = 0, j = str.length() - 1; i < j; i++, j--) {
      char temp = value[i];
      value[i] = value[j];
      value[j] = temp;
    }
    return new String(value);
  }
}
